package com.zeta.demo.seata.common.config;

import com.zeta.api.client.logs.ILogsApi;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.zetaframework.log.event.LogListener;

/**
 * 日志事件配置
 *
 * @author gcc
 */
@Slf4j
@Configuration
@RequiredArgsConstructor
public class LogEventConfiguration {

    private final ILogsApi logsApi;

    /**
     * <p>配置系统日志事件监听 实现</p>
     *
     * 说明：<br>
     * 考虑到不是所有项目都有记录用户操作日志的需求。故将日志记录功能剥离出来放到zetaframework核心包中。
     * 开发者可以在配置文件中将"zeta.log.enable"的值改成false。这样就关闭用户操作日志记录功能了
     * @return {@link LogListener}
     */
    @Bean
    public LogListener sysLogListener() {
        // 远程调用 保存操作日志
        return new LogListener(logsApi::saveOptLog);
    }
}
